
package model;
/**
 * @ Authors:
 * 
 * @Veronique De Laet
 * @Johan Willems
 * @Pierre Delaere
 * 
 * @version 2011
 */

import java.util.ArrayList;
import java.util.Iterator;

import model.container.AangebodenCursussen;
import model.container.Cursussen;
import model.container.Lectoren;
import persistency.DatabaseToegang;

/**
 * @author Johan
 *
 */
public class AangebodenCursusRule implements IPlanningRule {

	/* (non-Javadoc)
	 * @see model.IPlanningRule#voldoet(java.lang.String)
	 */
	ArrayList<String> lijst = new ArrayList<String>();
	DatabaseToegang db = new DatabaseToegang();
	String dbCommand;
	String resultaat = "";
	
	@Override

	public String voldoet(String nieuweCursus) {
		String[] deel = nieuweCursus.split("   "); 
		String[] cursus = deel[0].split(":");// de cursusnaam is het derde deel van het eerste blok
		String[] lector = deel[1].split(":");//de lector in het tweede deel van het tweede blok
		String[] lokaal = deel[2].split(":");//het lokaal is het tweede deel van het derde blok
		String[] dag = deel[3].split(":");//de dag is in het tweede deel van het vierde blok
		String[] uur = deel[4].split(":");//het uur is in het tweede deel van het vijfde blok
		String startUur = uur[1].substring(0, 2);
		String startMinuut = uur[1].substring(3,5);

		boolean gelijk = false;
/* 
		boolean cursusGelijk;
		boolean lokaalGelijk;
		boolean dagGelijk;
		boolean uurGelijk;
		boolean minutenGelijk;
		boolean lectorGelijk;
		AangebodenCursus aCursus;
		Iterator<AangebodenCursus> aIterator = AangebodenCursussen.aangebodenCursusLijst.values().iterator();
		while (aIterator.hasNext()){
			cursusGelijk = false;
			lokaalGelijk = false;
			dagGelijk = false;
			uurGelijk = false;
			minutenGelijk = false;
			lectorGelijk = false;
			aCursus = aIterator.next();
				
			if(cursus[2].equals(Cursussen.cursusLijst.get(aCursus.getCursusCode()).getCursusNaam())) {
				cursusGelijk = true;
			}
			
			if (lokaal[1].equals(aCursus.getLokaal().toString())){
				lokaalGelijk = true;
			}
			
			if (dag[1].equals(aCursus.getTijdDag().getDag().toString())){
				dagGelijk = true;
			}
						
			String startUur = uur[1].substring(0, 2);
			String startMinuut = uur[1].substring(3,5);

			if (startUur.equals(Integer.toString(aCursus.getTijdDag().getStartUur()))){
				uurGelijk = true;
			}
	
			String minuten = Integer.toString(aCursus.getTijdDag().getStartMinuten());
			if (Integer.toString(aCursus.getTijdDag().getStartMinuten()).equals("0"));
				minuten = "00";
			
			if (startMinuut.equals(minuten)){
				minutenGelijk = true;
			}

			Iterator<Lector> lIterator = Lectoren.lectorenLijst.values().iterator();
			Lector lLector;
			while (lIterator.hasNext())
			{
				lLector = lIterator.next();
				if (!lectorGelijk && (lLector.getLectorNaam().equals(lector[1])))
				{
					lectorGelijk = true;
				}
			}
			
			if (!gelijk && cursusGelijk && lokaalGelijk && dagGelijk && uurGelijk && minutenGelijk && lectorGelijk) {
				gelijk = true;
			}
		if (gelijk){
			return "Een aangeboden cursus kan geen 2 keer voorkomen. ";
		}
*/
		dbCommand  = "select count(*) ";
		dbCommand += "from ( ";
		dbCommand += "select  c.cursusNaam cursusNaam ";
		dbCommand += ",l.lectorNaam lectorNaam ";
		dbCommand += ",lo.Lokaal lokaalNaam ";   
		dbCommand += ",ld.lesdag ";
		dbCommand += ",t.uur ";
		dbCommand += ",t.Minuut ";
		dbCommand += ",t.duur ";
		dbCommand += "from aangebodencursus ac ";
		dbCommand += ",cursus c ";
		dbCommand += ",lector l ";
		dbCommand += ",lokaal lo ";
		dbCommand += ",tijdsmoment t ";
		dbCommand += ",lesdag ld ";
		dbCommand += "where ac.cursusCode = c.cursusCode ";
		dbCommand += "and l.lectorCode = c.lector ";
		dbCommand += "and ac.lokaal = lo.idLokaal ";
		dbCommand += "and t.idTijdsmoment = ac.idTijdsMoment ";
		dbCommand += "and ld.idLesDag = t.dag ";
		dbCommand += ") a  ";
		dbCommand += "where a.cursusNaam = '" +  cursus[2] + "' ";
		dbCommand += "and a.lectornaam = '" + lector[1] + "' ";
		dbCommand += "and a.lokaalNaam = '" + lokaal[1] + "' ";
		dbCommand += "and a.lesdag = '" + dag[1] + "' ";
		dbCommand += "and a.uur = " + Integer.parseInt(startUur) + " ";
		dbCommand += "and a.minuut = " + Integer.parseInt(startMinuut) ;
		lijst = db.getFromDB(dbCommand);
		for(String element : lijst)
		if (element != "0"){
			resultaat = "Een aangeboden cursus kan geen 2 keer voorkomen. ";
		}
		return resultaat;	
	}
}
